Merhaba Ali,
Splash, karşılama ekranı, olarak bilinen activity'nin nasıl oluşturacağını anlatmaya çalışayım sana.
İlk olarak yeni bir xml dosyası oluşturuyoruz. Adına splashscreen.xml diyelim. Bu xml dosyası bizim Splash ekranımızın tasarımını oluşturacaktır. Örnek olarak şöyle bir şey oluşturdum.
[code]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_horizontal"
android:gravity="center_vertical"
android:orientation="vertical" >
<ImageView
android:id="@+id/splashscreen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_launcher" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="Merhaba ben, splash , karşılama ekranıyım" />
</LinearLayout>[/code]
Görünümü de şuna benzeyecektir:
Ardından xml dosyamızı, tasarımımızı bir Java dosyasıyla entegre etmeliyiz. Entegre işlemini gerçekleştireceğimiz Java dosyası, aynı zamanda bizim Splash ekranımızın ayarlarını da içerisinde barındıracaktır.
Bunun için ben src (source) klasörüm altnda Splash.java dosyası oluşturuyorum.
[code]import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
public class Splash extends Activity {
/*
** Yazar: Gökhan KARAGÖZ
Turkcell Kullanıcı adı: gokhnkaragz
**
*/
/** Milisaniye cinsinden bekleme süresi **/
private final int SPLASH_DISPLAY_LENGTH = 1000;
/** Activity çağırıldığında yapılan ilk işlemler aşağıda yer alır. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.splashscreen);
/* Bu activity çalıştırıldığında ipleri ele alan
* bir Splash yani karşılama ekranımızı çağırırız. */
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
/* Karşılama ekranımızı işi bitene kadar çağırırız, ardından MainActivity'mize geçiş yaparız. */
Intent mainIntent = new Intent(Splash.this,MainActivity.class);
Splash.this.startActivity(mainIntent);
Splash.this.finish();
}
}, SPLASH_DISPLAY_LENGTH);
}
}[/code]
Kodlar arasında bulunan private final int SPLASH_DISPLAY_LENGTH = 1000; tanımı bize milisaniye cinsinden Splash dosyamıza ait layoutumuzun ne kadar aktif olacağını ayarlamamıza olanak sağlıyor.
Tüm bu işlemlerden sonra yeni oluşturduğumuz Splash activity'i uygulamamızın kalbi olarak nitelendirdiğimiz Android Manifest dosyasında tanımını gerçekleştirmemiz gerekiyor.
[code]<activity
android:name=".Splash"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>[/code]
Böyle bir tanım bizim işimizi görecektir. Fark ettiğin üzere activity'nin intent action'ununu MAIN olarak değiştirdim. Bunun sebebi, uygulamamız ilk açıldığında Splash javasının çalıştırılmasını istediğimiz için. Ve yine aynı şekilde intent kategorisini LAUNCHER olarak ayarladım. Bu ise, uygulamamızı cihazımıza yüklediğimizde bize oluşturulacak olan ikonun Splash ekranı ile başlatılmasını sağlıyor.
Tüm bu değişiklikler ile birlikte eski intent actionum olan MainActivity'min ayarlarını MAIN değil, HOME olarak, intent kategorisini ise DEFAULT olarak değiştiriyorum ki uygulamamız cihazımıza yüklendiğinde bize 2 tane launcher ikonu oluşturmasını istemeyiz.
Netice itibariyle manifest dosyam şu şekle bürünüyor:
[code]<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.splashscreen"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".Splash"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>[/code]
Umarım yardımcı olabilmişimdir. Kaynak kodunu da buraya (tıkla bana) bırakayım, belki kullanmak istersin.
İyi çalışmalar dilerim...